8  Mapas 3D

9 Exemplo 1:

Vamos utilizar a geometria do Estado da Paraíba e da Bahia do pacote geobr e plotar seus dados de elevação a partir das informações do pacote elevatr.

Vamos carregar os pacotes necessários:

library(tidyverse)
library (geobr)
library(elevatr)
library(raster)
library(rayshader)

pb <- read_state (code_state = 25)
topo <- get_elev_raster (pb, z=8, clip='location')
plot (topo)

Vamos converter o objeto raster para uma matriz e posteriormente plotar o mapa 3D com o rayshader.

topo_matrix <- raster_to_matrix(topo)
topo_matrix %>%
sphere_shade(texture = "imhof1") %>%
plot_3d(topo_matrix, zscale = 10, fov = 0, theta = 135,
zoom = 0.75, phi = 45, windowsize = c(1000, 800))
ba = read_state (code_state = 29)
topo <- get_elev_raster(ba, z=8, clip='location')
plot(topo)

Vamos converter o objeto raster para uma matriz e posteriormente plotar o mapa 3D com o rayshader.

topo_matrix <- raster_to_matrix(topo)
topo_matrix %>%
sphere_shade(texture = "imhof3") %>%
plot_3d(topo_matrix, zscale = 10, fov = 0, theta = 135,
zoom = 0.75, phi = 45, windowsize = c(1000, 800))

10 Exemplo 2:

Vamos fazer o download de dados de elevação no formato raster e posteriormente convertê-lo para uma matriz.

loadzip = tempfile()
download.file('https://tylermw.com/data/dem_01.tif.zip', loadzip)
localtif = unzip(loadzip, 'dem_01.tif') %>% raster()
plot(localtif)

Com o rayshader vamos adicionar a textura e plotar o mapa:

rast.mat = raster_to_matrix(localtif)

rast.mat %>%
sphere_shade(texture = 'desert') %>% plot_map()

Vamos adicionar corpos d’água, sombras projetadas e sombras ambientes à visualização e por fim, plota-la em 3D.

rast.mat %>%
sphere_shade(texture = "desert") %>%
add_water (detect_water (rast.mat), color = "desert") %>%
add_shadow(ray_shade (rast.mat, zscale = 3), 0.5) %>%
add_shadow(ambient_shade(rast.mat), 0) %>%
plot_3d(rast.mat, zscale = 10, fov = 0, theta = 135,
zoom = 0.75, phi = 45, windowsize = c(1000, 800))

#Salvar a imagem 3D
save_3dprint("3d_elevation.stl")